<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="cache-control" content="no-cache">
<title>Genivia - SSL/TLS context and functions</title>
<link href="genivia_tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="genivia_content.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="top">
 <div id="titlearea">
  <table height="72px" width="100%" cellspacing="0" cellpadding="0">
   <tbody>
    <tr>
     <td width="10%">&nbsp;</td>
     <td width="175px"><a href="https://www.genivia.com"><img alt="Genivia" src="GeniviaLogo2_trans_noslogan.png"/></a></td>
     <td class="tab_home"><a href="https://www.genivia.com">Home</a></td>
     <td class="tab_home"><a href="https://www.genivia.com/docs.html">Documentation</a></td>
     <td>
      <div style="float: right; font-size: 18px; font-weight: bold;">SSL/TLS context and functions</div>
      <br>
      <div style="float: right; font-size: 10px;">updated Thu Dec 23 2021 by Robert van Engelen</div>
     </td>
     <td width="10%">&nbsp;</td>
    </tr>
   </tbody>
  </table>
 </div>
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__group__ssl.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">SSL/TLS context and functions</div>  </div>
</div><!--header-->
<div class="contents">

<p>This module defines functions to set the SSL/TLS context for HTTPS and WS-Security.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga63d10bdcb2b678d9d55cab31e1bdaf3e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>&#160;&#160;&#160;(<a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a> | <a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b">SOAP_TLSv1</a>)</td></tr>
<tr class="memdesc:ga63d10bdcb2b678d9d55cab31e1bdaf3e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag with <code><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc" title="soap_ssl_flags flag for clients to require servers to authenticate to clients during the HTTPS handsh...">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></code> and <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code> enabled by default  <a href="#ga63d10bdcb2b678d9d55cab31e1bdaf3e">More...</a><br /></td></tr>
<tr class="separator:ga63d10bdcb2b678d9d55cab31e1bdaf3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa78c27c03ccd2fb47afda6b83a3fd01c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaa78c27c03ccd2fb47afda6b83a3fd01c">SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</a></td></tr>
<tr class="memdesc:gaa78c27c03ccd2fb47afda6b83a3fd01c"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to allow self-signed and expired certificates and those without CRL to be used for authentication  <a href="#gaa78c27c03ccd2fb47afda6b83a3fd01c">More...</a><br /></td></tr>
<tr class="separator:gaa78c27c03ccd2fb47afda6b83a3fd01c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga52614007d0c0359ceaf86588f47661b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga52614007d0c0359ceaf86588f47661b9">SOAP_SSL_NO_AUTHENTICATION</a></td></tr>
<tr class="memdesc:ga52614007d0c0359ceaf86588f47661b9"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to disable authentication of the peer  <a href="#ga52614007d0c0359ceaf86588f47661b9">More...</a><br /></td></tr>
<tr class="separator:ga52614007d0c0359ceaf86588f47661b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1bd8c93325f8150c6a2f9c1844e92558"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga1bd8c93325f8150c6a2f9c1844e92558">SOAP_SSL_NO_DEFAULT_CA_PATH</a></td></tr>
<tr class="memdesc:ga1bd8c93325f8150c6a2f9c1844e92558"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to prevent OpenSSL from calling <code>SSL_CTX_set_default_verify_paths</code>  <a href="#ga1bd8c93325f8150c6a2f9c1844e92558">More...</a><br /></td></tr>
<tr class="separator:ga1bd8c93325f8150c6a2f9c1844e92558"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ab5e7f3fbb00fa2669e29e9ca000d12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a></td></tr>
<tr class="memdesc:ga4ab5e7f3fbb00fa2669e29e9ca000d12"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for servers to require clients to authenticate to servers during the HTTPS handshake  <a href="#ga4ab5e7f3fbb00fa2669e29e9ca000d12">More...</a><br /></td></tr>
<tr class="separator:ga4ab5e7f3fbb00fa2669e29e9ca000d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8c9f87b34ff34020349d4fe7300c47bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></td></tr>
<tr class="memdesc:ga8c9f87b34ff34020349d4fe7300c47bc"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to require servers to authenticate to clients during the HTTPS handshake  <a href="#ga8c9f87b34ff34020349d4fe7300c47bc">More...</a><br /></td></tr>
<tr class="separator:ga8c9f87b34ff34020349d4fe7300c47bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab7153fa5dcada365bce84add0cb60a8e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gab7153fa5dcada365bce84add0cb60a8e">SOAP_SSL_RSA</a></td></tr>
<tr class="memdesc:gab7153fa5dcada365bce84add0cb60a8e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to use RSA instead of DH (automatically set when no DH parameter is specified)  <a href="#gab7153fa5dcada365bce84add0cb60a8e">More...</a><br /></td></tr>
<tr class="separator:gab7153fa5dcada365bce84add0cb60a8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d7d44f0b65da9941f0272b0f73745f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga2d7d44f0b65da9941f0272b0f73745f5">SOAP_SSL_SKIP_HOST_CHECK</a></td></tr>
<tr class="memdesc:ga2d7d44f0b65da9941f0272b0f73745f5"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to allow clients to skip common name checks against the host name of the server  <a href="#ga2d7d44f0b65da9941f0272b0f73745f5">More...</a><br /></td></tr>
<tr class="separator:ga2d7d44f0b65da9941f0272b0f73745f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d4dc7f02c689dd69a5508848b7b701d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d">SOAP_SSLv3</a></td></tr>
<tr class="memdesc:ga0d4dc7f02c689dd69a5508848b7b701d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only  <a href="#ga0d4dc7f02c689dd69a5508848b7b701d">More...</a><br /></td></tr>
<tr class="separator:ga0d4dc7f02c689dd69a5508848b7b701d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf273a14b5105e943a0280947d7def8ff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff">SOAP_SSLv3_TLSv1</a></td></tr>
<tr class="memdesc:gaf273a14b5105e943a0280947d7def8ff"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max)  <a href="#gaf273a14b5105e943a0280947d7def8ff">More...</a><br /></td></tr>
<tr class="separator:gaf273a14b5105e943a0280947d7def8ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabdef447c5c16a0d5a35388cb64835f9b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b">SOAP_TLSv1</a></td></tr>
<tr class="memdesc:gabdef447c5c16a0d5a35388cb64835f9b"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3  <a href="#gabdef447c5c16a0d5a35388cb64835f9b">More...</a><br /></td></tr>
<tr class="separator:gabdef447c5c16a0d5a35388cb64835f9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3d8ef23939e8678b69552994f949461"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461">SOAP_TLSv1_0</a></td></tr>
<tr class="memdesc:gac3d8ef23939e8678b69552994f949461"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.0  <a href="#gac3d8ef23939e8678b69552994f949461">More...</a><br /></td></tr>
<tr class="separator:gac3d8ef23939e8678b69552994f949461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab841bb29efb683c12614424fa7f3c623"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a></td></tr>
<tr class="memdesc:gab841bb29efb683c12614424fa7f3c623"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.1  <a href="#gab841bb29efb683c12614424fa7f3c623">More...</a><br /></td></tr>
<tr class="separator:gab841bb29efb683c12614424fa7f3c623"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaec41400f54924b9f7eb260f206a18dd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a></td></tr>
<tr class="memdesc:gaaec41400f54924b9f7eb260f206a18dd"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.2  <a href="#gaaec41400f54924b9f7eb260f206a18dd">More...</a><br /></td></tr>
<tr class="separator:gaaec41400f54924b9f7eb260f206a18dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaecb885d03bfd4ba6636028326390192a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a">SOAP_TLSv1_3</a></td></tr>
<tr class="memdesc:gaecb885d03bfd4ba6636028326390192a"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.3  <a href="#gaecb885d03bfd4ba6636028326390192a">More...</a><br /></td></tr>
<tr class="separator:gaecb885d03bfd4ba6636028326390192a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga0cd7f0c3eda00033f2a3b6da331f39ed"><td class="memItemLeft" align="right" valign="top">typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a></td></tr>
<tr class="memdesc:ga0cd7f0c3eda00033f2a3b6da331f39ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">SSL/TLS (HTTPS) client and server context flags for <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> and <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, respectively, flags can be combined with <code>|</code> (bit-wise or)  <a href="#ga0cd7f0c3eda00033f2a3b6da331f39ed">More...</a><br /></td></tr>
<tr class="separator:ga0cd7f0c3eda00033f2a3b6da331f39ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga570b262ac9d55fc509f1f5999deaa18f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f">soap_ssl_init</a> (void)</td></tr>
<tr class="memdesc:ga570b262ac9d55fc509f1f5999deaa18f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the SSL/TLS library.  <a href="#ga570b262ac9d55fc509f1f5999deaa18f">More...</a><br /></td></tr>
<tr class="separator:ga570b262ac9d55fc509f1f5999deaa18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0391e39e900926438969dc2461634574"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574">soap_ssl_noinit</a> (void)</td></tr>
<tr class="memdesc:ga0391e39e900926438969dc2461634574"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not initalized the SSL/TLS library.  <a href="#ga0391e39e900926438969dc2461634574">More...</a><br /></td></tr>
<tr class="separator:ga0391e39e900926438969dc2461634574"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3492465cdd8aa71fe746199d3842cac7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>, <a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a> flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid)</td></tr>
<tr class="memdesc:ga3492465cdd8aa71fe746199d3842cac7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the server-side SSL/TLS context.  <a href="#ga3492465cdd8aa71fe746199d3842cac7">More...</a><br /></td></tr>
<tr class="separator:ga3492465cdd8aa71fe746199d3842cac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga269c7732b1cda9dc79db08fcbf1d5438"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>, <a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a> flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *randfile)</td></tr>
<tr class="memdesc:ga269c7732b1cda9dc79db08fcbf1d5438"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the client-side SSL/TLS context.  <a href="#ga269c7732b1cda9dc79db08fcbf1d5438">More...</a><br /></td></tr>
<tr class="separator:ga269c7732b1cda9dc79db08fcbf1d5438"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae4052d1c701d1756c3e1b86c740881d5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5">soap_ssl_crl</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>, const char *crlfile)</td></tr>
<tr class="memdesc:gae4052d1c701d1756c3e1b86c740881d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable SSL/TLS CRLs.  <a href="#gae4052d1c701d1756c3e1b86c740881d5">More...</a><br /></td></tr>
<tr class="separator:gae4052d1c701d1756c3e1b86c740881d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga990083effa5d8ed931fd75dc2630a2cc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc">soap_ssl_accept</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>)</td></tr>
<tr class="memdesc:ga990083effa5d8ed931fd75dc2630a2cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accept SSL/TLS connection.  <a href="#ga990083effa5d8ed931fd75dc2630a2cc">More...</a><br /></td></tr>
<tr class="separator:ga990083effa5d8ed931fd75dc2630a2cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaedc51dd2ab95cdff45057639fac70a8f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f">CRYPTO_thread_setup</a> ()</td></tr>
<tr class="memdesc:gaedc51dd2ab95cdff45057639fac70a8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applications.  <a href="#gaedc51dd2ab95cdff45057639fac70a8f">More...</a><br /></td></tr>
<tr class="separator:gaedc51dd2ab95cdff45057639fac70a8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8b29e4ea1419a4af49823862765f2918"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918">CRYPTO_thread_cleanup</a> ()</td></tr>
<tr class="memdesc:ga8b29e4ea1419a4af49823862765f2918"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup function for OpenSSL versions prior to 1.1.1.  <a href="#ga8b29e4ea1419a4af49823862765f2918">More...</a><br /></td></tr>
<tr class="separator:ga8b29e4ea1419a4af49823862765f2918"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This module defines functions to set the SSL/TLS context for HTTPS and WS-Security. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaa78c27c03ccd2fb47afda6b83a3fd01c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to allow self-signed and expired certificates and those without CRL to be used for authentication </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga63d10bdcb2b678d9d55cab31e1bdaf3e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_DEFAULT&#160;&#160;&#160;(<a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a> | <a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b">SOAP_TLSv1</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag with <code><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc" title="soap_ssl_flags flag for clients to require servers to authenticate to clients during the HTTPS handsh...">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></code> and <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code> enabled by default </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga52614007d0c0359ceaf86588f47661b9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_NO_AUTHENTICATION</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to disable authentication of the peer </p>
<p>This flag should be used sparingly such as for testing only.</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga1bd8c93325f8150c6a2f9c1844e92558"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_NO_DEFAULT_CA_PATH</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to prevent OpenSSL from calling <code>SSL_CTX_set_default_verify_paths</code> </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4ab5e7f3fbb00fa2669e29e9ca000d12"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for servers to require clients to authenticate to servers during the HTTPS handshake </p>
<p>This flag requires clients connected to the server to authenticate to the server. The <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code> must specify <code>cafile</code> and/or <code>capath</code> parameters with certificates (CA root and/or server certificates) to authenticate clients.</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga8c9f87b34ff34020349d4fe7300c47bc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to require servers to authenticate to clients during the HTTPS handshake </p>
<p>This flag requires connected servers to authenticate to the client. The <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> must specify <code>cafile</code> and/or <code>capath</code> parameters with certificates (CA root and/or server certificates) to authenticate the server.</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gab7153fa5dcada365bce84add0cb60a8e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_RSA</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to use RSA instead of DH (automatically set when no DH parameter is specified) </p>

</div>
</div>
<a class="anchor" id="ga2d7d44f0b65da9941f0272b0f73745f5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_SKIP_HOST_CHECK</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to allow clients to skip common name checks against the host name of the server </p>

</div>
</div>
<a class="anchor" id="ga0d4dc7f02c689dd69a5508848b7b701d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSLv3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf273a14b5105e943a0280947d7def8ff"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSLv3_TLSv1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gabdef447c5c16a0d5a35388cb64835f9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gac3d8ef23939e8678b69552994f949461"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.0 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gab841bb29efb683c12614424fa7f3c623"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.1 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaaec41400f54924b9f7eb260f206a18dd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.2 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaecb885d03bfd4ba6636028326390192a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.3 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga0cd7f0c3eda00033f2a3b6da331f39ed"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef unsigned short <a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SSL/TLS (HTTPS) client and server context flags for <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> and <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, respectively, flags can be combined with <code>|</code> (bit-wise or) </p>
<p>The SSL/TLS flags are:</p><ul>
<li><code><a class="el" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e" title="soap_ssl_flags flag with SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION and SOAP_TLSv1 enabled by default ...">SOAP_SSL_DEFAULT</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaa78c27c03ccd2fb47afda6b83a3fd01c" title="soap_ssl_flags flag value to allow self-signed and expired certificates and those without CRL to be u...">SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga52614007d0c0359ceaf86588f47661b9" title="soap_ssl_flags flag value to disable authentication of the peer ">SOAP_SSL_NO_AUTHENTICATION</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga1bd8c93325f8150c6a2f9c1844e92558" title="soap_ssl_flags flag value to prevent OpenSSL from calling SSL_CTX_set_default_verify_paths ...">SOAP_SSL_NO_DEFAULT_CA_PATH</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12" title="soap_ssl_flags flag for servers to require clients to authenticate to servers during the HTTPS handsh...">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc" title="soap_ssl_flags flag for clients to require servers to authenticate to clients during the HTTPS handsh...">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gab7153fa5dcada365bce84add0cb60a8e" title="soap_ssl_flags flag value to use RSA instead of DH (automatically set when no DH parameter is specifi...">SOAP_SSL_RSA</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga2d7d44f0b65da9941f0272b0f73745f5" title="soap_ssl_flags flag for clients to allow clients to skip common name checks against the host name of ...">SOAP_SSL_SKIP_HOST_CHECK</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code> </li>
</ul>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga8b29e4ea1419a4af49823862765f2918"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CRYPTO_thread_cleanup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Cleanup function for OpenSSL versions prior to 1.1.1. </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code>, <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaedc51dd2ab95cdff45057639fac70a8f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CRYPTO_thread_setup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applications. </p>
<p>The <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code>CRYPTO_thread_setup</code> cleanup functions should be defined in the source code of a multi-threaded SSL/TLS application as follows, requiring gsoap/plugin/threads.h:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;plugin/threads.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>CRYPTO_dynlock_value</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a> mutex;</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">static</span> <a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a> *mutex_buf = NULL;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">struct </span>CRYPTO_dynlock_value *dyn_create_function(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  <span class="keyword">struct </span>CRYPTO_dynlock_value *value;</div><div class="line">  (void)file; (void)line;</div><div class="line">  value = (<span class="keyword">struct </span>CRYPTO_dynlock_value*)OPENSSL_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> CRYPTO_dynlock_value));</div><div class="line">  <span class="keywordflow">if</span> (value)</div><div class="line">    <a class="code" href="group__group__threads.html#gaebadda8d216cdac28b0d9763be7fe689">MUTEX_SETUP</a>(value-&gt;mutex);</div><div class="line">  <span class="keywordflow">return</span> value;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> dyn_lock_function(<span class="keywordtype">int</span> mode, <span class="keyword">struct</span> CRYPTO_dynlock_value *l, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  (void)file; (void)line;</div><div class="line">  <span class="keywordflow">if</span> (mode &amp; CRYPTO_LOCK)</div><div class="line">    <a class="code" href="group__group__threads.html#ga4a9fdd824c39252e5bf292df736e5648">MUTEX_LOCK</a>(l-&gt;mutex);</div><div class="line">  <span class="keywordflow">else</span></div><div class="line">    <a class="code" href="group__group__threads.html#ga706e720f96e7405766dd119e654e03f9">MUTEX_UNLOCK</a>(l-&gt;mutex);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> dyn_destroy_function(<span class="keyword">struct</span> CRYPTO_dynlock_value *l, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  (void)file; (void)line;</div><div class="line">  <a class="code" href="group__group__threads.html#ga295d2586aa4d2379248805e622b43742">MUTEX_CLEANUP</a>(l-&gt;mutex);</div><div class="line">  OPENSSL_free(l);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> locking_function(<span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> n, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  (void)file; (void)line;</div><div class="line">  <span class="keywordflow">if</span> (mode &amp; CRYPTO_LOCK)</div><div class="line">    <a class="code" href="group__group__threads.html#ga4a9fdd824c39252e5bf292df736e5648">MUTEX_LOCK</a>(mutex_buf[n]);</div><div class="line">  <span class="keywordflow">else</span></div><div class="line">    <a class="code" href="group__group__threads.html#ga706e720f96e7405766dd119e654e03f9">MUTEX_UNLOCK</a>(mutex_buf[n]);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> id_function()</div><div class="line">{</div><div class="line">  <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)<a class="code" href="group__group__threads.html#ga9ab5a77b8cf2b98f7d6c1b48bb421f69">THREAD_ID</a>;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> <a class="code" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f">CRYPTO_thread_setup</a>()</div><div class="line">{</div><div class="line">  <span class="keywordtype">int</span> i;</div><div class="line">  mutex_buf = (<a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a>*)OPENSSL_malloc(CRYPTO_num_locks() * <span class="keyword">sizeof</span>(<a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a>));</div><div class="line">  <span class="keywordflow">if</span> (!mutex_buf)</div><div class="line">    <span class="keywordflow">return</span> <a class="code" href="group__group__errors.html#ga9fd637076afcd330401f2cd0a71fe729">SOAP_EOM</a>;</div><div class="line">  <span class="keywordflow">for</span> (i = 0; i &lt; CRYPTO_num_locks(); i++)</div><div class="line">    <a class="code" href="group__group__threads.html#gaebadda8d216cdac28b0d9763be7fe689">MUTEX_SETUP</a>(mutex_buf[i]);</div><div class="line">  CRYPTO_set_id_callback(id_function);</div><div class="line">  CRYPTO_set_locking_callback(locking_function);</div><div class="line">  CRYPTO_set_dynlock_create_callback(dyn_create_function);</div><div class="line">  CRYPTO_set_dynlock_lock_callback(dyn_lock_function);</div><div class="line">  CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function);</div><div class="line">  <span class="keywordflow">return</span> <a class="code" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0">SOAP_OK</a>;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> <a class="code" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918">CRYPTO_thread_cleanup</a>()</div><div class="line">{</div><div class="line">  <span class="keywordtype">int</span> i;</div><div class="line">  <span class="keywordflow">if</span> (!mutex_buf)</div><div class="line">    <span class="keywordflow">return</span>;</div><div class="line">  CRYPTO_set_id_callback(NULL);</div><div class="line">  CRYPTO_set_locking_callback(NULL);</div><div class="line">  CRYPTO_set_dynlock_create_callback(NULL);</div><div class="line">  CRYPTO_set_dynlock_lock_callback(NULL);</div><div class="line">  CRYPTO_set_dynlock_destroy_callback(NULL);</div><div class="line">  <span class="keywordflow">for</span> (i = 0; i &lt; CRYPTO_num_locks(); i++)</div><div class="line">    <a class="code" href="group__group__threads.html#ga295d2586aa4d2379248805e622b43742">MUTEX_CLEANUP</a>(mutex_buf[i]);</div><div class="line">  OPENSSL_free(mutex_buf);</div><div class="line">  mutex_buf = NULL;</div><div class="line">}</div></div><!-- fragment --><dl class="section user"><dt>Example:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f">soap_ssl_init</a>();</div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f">CRYPTO_thread_setup</a>())</div><div class="line">    exit(EXIT_FAILURE);</div><div class="line">  ... <span class="comment">// run the application</span></div><div class="line">  <a class="code" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918">CRYPTO_thread_cleanup</a>();</div><div class="line">}</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code>, <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga990083effa5d8ed931fd75dc2630a2cc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_accept </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accept SSL/TLS connection. </p>
<p>This function should be called after calling <code><a class="el" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6" title="Accept a connection with a client. ">soap_accept</a></code> to perform the SSL/TLS handshake with a connected client. This function enforces HTTPS connections that are initialized with <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<dl class="section user"><dt>Examples:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap, <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="stringliteral">&quot;server.pem&quot;</span>, <span class="stringliteral">&quot;password&quot;</span>, NULL, NULL, NULL, NULL, NULL))</div><div class="line">    exit(EXIT_FAILURE);</div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a78199a81c504833047224a0ceff6f906">accept_timeout</a> = 3600;                <span class="comment">// exit loop when no request arrives in one hour</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a711bb3a53de7cc62429e4d3a2e0b5474">send_timeout</a> = soap_recv_timeout = 5; <span class="comment">// 5 seconds max socket stall time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#afcf1d236d052579122f785d7639c43c7">transfer_timeout</a> = 30;                <span class="comment">// 30 seconds max message transfer time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a345900c2db67e915ceb02bfa21ecbcbd">recv_maxlength</a> = 1048576;             <span class="comment">// limit messages received to 1MB (2GB by default)</span></div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18">soap_bind</a>(soap, NULL, PORTNUM, BACKLOG)))</div><div class="line">  {</div><div class="line">    <span class="keywordflow">while</span> (1)</div><div class="line">    {</div><div class="line">      <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6">soap_accept</a>(soap)))</div><div class="line">      {</div><div class="line">        <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc">soap_ssl_accept</a>(soap) || <a class="code" href="group__group__io.html#ga51dba7706a505240bd8935c0b28e419d">soap_serve</a>(soap))</div><div class="line">          <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="keywordflow">if</span> (soap-&gt;<a class="code" href="structsoap.html#a10b66d6d489690b7d0f591ae2633dd13">errnum</a>) <span class="comment">// accept failed, try again after 1 second</span></div><div class="line">      {</div><div class="line">        <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">        sleep(1);</div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="comment">// accept timed out, quit looping</span></div><div class="line">      {</div><div class="line">        <span class="keywordflow">break</span>;</div><div class="line">      }</div><div class="line">      <a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line">      <a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line">    }</div><div class="line">  }</div><div class="line">  <a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;plugin/threads.h&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a6b18b017ce2c77ac2b6331469094de59">bind_flags</a> = SO_REUSEADDR;            <span class="comment">// immediate port reuse</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a78199a81c504833047224a0ceff6f906">accept_timeout</a> = 3600;                <span class="comment">// exit loop when no request arrives in one hour</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a711bb3a53de7cc62429e4d3a2e0b5474">send_timeout</a> = soap_recv_timeout = 5; <span class="comment">// 5 seconds max socket stall time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#afcf1d236d052579122f785d7639c43c7">transfer_timeout</a> = 30;                <span class="comment">// 30 seconds max message transfer time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a345900c2db67e915ceb02bfa21ecbcbd">recv_maxlength</a> = 1048576;             <span class="comment">// limit messages received to 1MB (2GB by default)</span></div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18">soap_bind</a>(soap, NULL, PORTNUM, BACKLOG)))</div><div class="line">  {</div><div class="line">    <span class="keywordflow">while</span> (1)</div><div class="line">    {</div><div class="line">      <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6">soap_accept</a>(soap)))</div><div class="line">      {</div><div class="line">        <a class="code" href="group__group__threads.html#ga53ca774b0fc84afe282a5419d2d7239a">THREAD_TYPE</a> tid;</div><div class="line">        <span class="keyword">struct </span>soap *tsoap = <a class="code" href="group__group__context.html#gab4c3f8ce80baf0f1fec8c86f0bb5788a">soap_copy</a>(soap);</div><div class="line">        <span class="keywordflow">if</span> (!tsoap)</div><div class="line">          <a class="code" href="group__group__io.html#ga0ca0c64dc76af8617956a62cf117db94">soap_force_closesock</a>(soap);</div><div class="line">        <span class="keywordflow">else</span></div><div class="line">          <span class="keywordflow">while</span> (<a class="code" href="group__group__threads.html#gabee88cce937a2709b4799ed8df36d486">THREAD_CREATE</a>(&amp;tid, (<span class="keywordtype">void</span>*(*)(<span class="keywordtype">void</span>*))&amp;process_request, (<span class="keywordtype">void</span>*)tsoap))</div><div class="line">            sleep(1); <span class="comment">// failed, try again</span></div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="keywordflow">if</span> (soap-&gt;<a class="code" href="structsoap.html#a10b66d6d489690b7d0f591ae2633dd13">errnum</a>) <span class="comment">// accept failed, try again after 1 second</span></div><div class="line">      {</div><div class="line">        <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">        sleep(1);</div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="comment">// accept timed out, quit looping</span></div><div class="line">      {</div><div class="line">        <span class="keywordflow">break</span>;</div><div class="line">      }</div><div class="line">      <a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line">      <a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line">    }</div><div class="line">  }</div><div class="line">  <a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> *process_request(<span class="keyword">struct</span> soap *soap)</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__threads.html#ga5848fc7adb50b3a15e40955dce7f8f53">THREAD_DETACH</a>(<a class="code" href="group__group__threads.html#ga9ab5a77b8cf2b98f7d6c1b48bb421f69">THREAD_ID</a>);</div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc">soap_ssl_accept</a>(soap) == <a class="code" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0">SOAP_OK</a>)</div><div class="line">    <a class="code" href="group__group__io.html#ga51dba7706a505240bd8935c0b28e419d">soap_serve</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div><div class="line">  <span class="keywordflow">return</span> NULL;</div><div class="line">}</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code> and SSL server context initialization with <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code>, <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>, <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>, <code><a class="el" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18" title="Bind and listen to a port. ">soap_bind</a></code>, <code><a class="el" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6" title="Accept a connection with a client. ">soap_accept</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>

</div>
</div>
<a class="anchor" id="ga269c7732b1cda9dc79db08fcbf1d5438"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_client_context </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a>&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>keyfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>password</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cafile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>capath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>randfile</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the client-side SSL/TLS context. </p>
<p>This function initializes the client-side SSL/TLS context of the OpenSSL or GNUTLS library. The <code>flags</code> parameter initializes the context with a combination of <code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code>. The <code>keyfile</code> parameter when non-NULL is the client's private key PEM file, typically concatenated with its certificate in the PEM file. The client's key is normally NULL and should only be specified if the server requires client authentication. The <code>password</code> parameter when non-NULL is used to unlock the password-protected private key in the key file. The <code>cafile</code> parameter when non-NULL is used to authenticate servers and contains the CA certificates of the server or servers. Alternatively, a directory name <code>capath</code> can be specified to point to a directory with the certificate(s). The <code>randfile</code> parameter when non-NULL can be used to seed the PRNG using the specified file with random data. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<p>All strings passed to this function must be persistent in memory until the SSL/TLS context is implicitly deleted when the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is deleted.</p>
<p>After <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> initialization you can select a specific cipher list using OpenSSL function <code>SSL_CTX_set_cipher_list(soap-&gt;ctx, "...")</code>. When authentication requires the use of CRLs, you can use <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code> to specify a CRL file and to use any CRLs provided with SSL/TLS handshakes.</p>
<p>All OpenSSL versions prior to 1.1.0 require mutex locks to be explicitly set up in your code for multi-threaded applications by calling <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup()</a></code>.</p>
<dl class="section user"><dt>Examples:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga52614007d0c0359ceaf86588f47661b9">SOAP_SSL_NO_AUTHENTICATION</a>, <span class="comment">// do not authenticate the server</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="comment">// authenticate, use TLSv1.0 to 1.3</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,    <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff">SOAP_SSLv3_TLSv1</a> |                  <span class="comment">// authenticate, use SSLv3, TLSv1.0 to 1.3</span></div><div class="line">      <a class="code" href="group__group__ssl.html#ga2d7d44f0b65da9941f0272b0f73745f5">SOAP_SSL_SKIP_HOST_CHECK</a> |          <span class="comment">// but skip host name checking</span></div><div class="line">      <a class="code" href="group__group__ssl.html#gaa78c27c03ccd2fb47afda6b83a3fd01c">SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</a>, <span class="comment">// and allow expired certificates</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,                      <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a> | <a class="code" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a>, <span class="comment">// authenticate, use TLSv1.1 or 1.2</span></div><div class="line">      <span class="stringliteral">&quot;client.pem&quot;</span>,                <span class="comment">// private key and certificate (allowing server to authenticate the client)</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                  <span class="comment">// password to read client.pem</span></div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,               <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="comment">// define a verification callback that allows self-signed certificates</span></div><div class="line"><span class="keywordtype">int</span> ssl_verify_callback_allow_self_signed_cert(<span class="keywordtype">int</span> ok, X509_STORE_CTX *store)</div><div class="line">{</div><div class="line">  <span class="keywordflow">if</span> (!ok &amp;&amp; X509_STORE_CTX_get_error(store) == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN)</div><div class="line">  {</div><div class="line">    X509_STORE_CTX_set_error(store, X509_V_OK);</div><div class="line">    ok = 1;</div><div class="line">  }</div><div class="line">  <span class="keywordflow">return</span> ok;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga49fee9ca4a78f9a681afbdfbc0194bf0">fsslverify</a> = ssl_verify_callback_allow_self_signed_cert;</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="comment">// authenticate, use TLSv1.0 to 1.3</span></div><div class="line">      <span class="stringliteral">&quot;client.pem&quot;</span>,     <span class="comment">// private key and certificate (allowing server to authenticate the client)</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,       <span class="comment">// password to read client.pem</span></div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,    <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__soap.html#gab18ff4d6039f1387641508ae7be8a145" title="User-definable length of RSA keys used for https connections (the value is 2048 by default) ...">SOAP_SSL_RSA_BITS</a></code>, <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>, <code><a class="el" href="group__group__callbacks.html#ga49fee9ca4a78f9a681afbdfbc0194bf0" title="Callback to manage the verification of the certificate provided by a peer (typically a server) ...">soap::fsslverify</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">soap</td><td><code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context </td></tr>
    <tr><td class="paramname">flags</td><td>SSL/TLS context initialization flags </td></tr>
    <tr><td class="paramname">keyfile</td><td>private key file in PEM format or NULL </td></tr>
    <tr><td class="paramname">password</td><td>password to unlock the private key or NULL </td></tr>
    <tr><td class="paramname">cafile</td><td>file with certificates in PEM format or NULL </td></tr>
    <tr><td class="paramname">capath</td><td>directory to certificates </td></tr>
    <tr><td class="paramname">randfile</td><td>file to seed the PRNG or NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae4052d1c701d1756c3e1b86c740881d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_crl </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>crlfile</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enable SSL/TLS CRLs. </p>
<p>This function enables SSL/TLS CRL checking during the SSL/TLS handshake. The <code>crlfile</code> when non-NULL specifies a file with CRLs in PEM format. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">soap</td><td><code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context </td></tr>
    <tr><td class="paramname">crlfile</td><td>CRL file in PEM format or NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga570b262ac9d55fc509f1f5999deaa18f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void soap_ssl_init </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the SSL/TLS library. </p>
<p>This function initializes the SSL/TLS library's global state and should be called just once per application. This function is called by the engine when the SSL/TLS library is used but not yet initialized. It is strongly recommended to call <code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code> once in a multi-threaded application before any threads are started. Furthermore, all OpenSSL versions prior to 1.1.0 require mutex locks to be explicitly set up in your code for multi-threaded applications by calling <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup()</a></code>.</p>
<dl class="section warning"><dt>Warning</dt><dd>If an application initializes the SSL/TLS library such as OpenSSL by loading algorithms, then <code><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574" title="Do not initalized the SSL/TLS library. ">soap_ssl_noinit</a></code> should be used instead before a <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is used to ensure that OpenSSL is not initialized twice.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code>, <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup</a></code>, <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga0391e39e900926438969dc2461634574"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void soap_ssl_noinit </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Do not initalized the SSL/TLS library. </p>
<p>This function prevents (re)initialization of the SSL/TLS library's global state and should be called when an application initializes the SSL/TLS library such as OpenSSL by loading algorithms. OpenSSL may misbehave when <code>SSL_library_init</code> and <code>OpenSSL_add_all_algorithms</code> are called more than once, e.g. by the application and again by the gSOAP engine. The latter is avoided by calling <code><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574" title="Do not initalized the SSL/TLS library. ">soap_ssl_noinit</a></code> before threads are started and before a <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is created. </p>

</div>
</div>
<a class="anchor" id="ga3492465cdd8aa71fe746199d3842cac7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_server_context </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a>&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>keyfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>password</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cafile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>capath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>dhfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>randfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the server-side SSL/TLS context. </p>
<p>This function initializes the server-side SSL/TLS context of OpenSSL or GNUTLS library. The <code>flags</code> parameter initializes the context with a combination of <code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code>. The <code>keyfile</code> parameter when non-NULL is the server's private key PEM file, typically concatenated with its certificate in the PEM file. The <code>password</code> parameter when non-NULL is used to unlock the password-protected private key in the key file. The <code>cafile</code> parameter when non-NULL is used to authenticate clients when the <code><a class="el" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12" title="soap_ssl_flags flag for servers to require clients to authenticate to servers during the HTTPS handsh...">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a></code> flag is used and contains the client or CA certificate(s). Alternatively, a directory name <code>capath</code> can be specified to point to a directory with the certificate(s). The <code>dhfile</code> parameter when non-NULL is a file with DH parameters to use DH instead of RSA. Alternatively, the <code>dhfile</code> parameter can be a numeric string value greater than 512 to let the engine generate the DH parameters, but beware this can take a while to execute. The <code>randfile</code> parameter when non-NULL can be used to seed the PRNG using the specified file with random data. The <code>sid</code> parameter when non-NULL is used for server-side session caching using a specified unique name per server. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<p>All strings passed to this function except <code>sid</code> must be persistent in memory until the SSL/TLS context is implicitly deleted when the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is deleted.</p>
<p>All OpenSSL versions prior to 1.1.0 require mutex locks to be explicitly set up in your code for multi-threaded applications by calling <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup()</a></code>.</p>
<p>After <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code> initialization you can select a specific cipher list using OpenSSL function <code>SSL_CTX_set_cipher_list(soap-&gt;ctx, "...")</code>. When client authentication is required with CRLs, you can use <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code> to specify a CRL file and to use any CRLs provided with SSL/TLS handshakes.</p>
<dl class="section user"><dt>Examples:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="comment">// authenticate, use TLSv1.0 to 1.3</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,     <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,       <span class="comment">// password to read server.pem</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;my_unique_server_id123&quot;</span> <span class="comment">// server identification to enable SSL session caching to speed up TLS</span></div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a> | <a class="code" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a>, <span class="comment">// authenticate, use TLSv1.1 or TLSv1.2 only</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,                <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                  <span class="comment">// password to read server.pem</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;dh1024.pem&quot;</span>,                <span class="comment">// use DH with 1024 bits</span></div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;my_unique_server_id123&quot;</span>     <span class="comment">// identification to enable SSL session caching to speed up TLS</span></div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a> | <a class="code" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a>, <span class="comment">// authenticate, use TLSv1.1 or TLSv1.2 only</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,                <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                  <span class="comment">// password to read server.pem</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;1024&quot;</span>,                      <span class="comment">// generate DH with 1024 bits (takes a while to execute)</span></div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;my_unique_server_id123&quot;</span>     <span class="comment">// identification to enable SSL session caching to speed up TLS</span></div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a>, <span class="comment">// require clients to authenticate</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,                           <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                             <span class="comment">// password to read server.pem</span></div><div class="line">      <span class="stringliteral">&quot;cacert.pem&quot;</span>,                           <span class="comment">// certificate to authenticate clients</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <a class="code" href="group__group__misc.html#ga5fcf3c8f6f4bc6d5e6efd7a92ceaf399">soap_rand_uuid</a>(soap, NULL) <span class="comment">// identification to enable SSL session caching to speed up TLS</span></div><div class="line">      )</div><div class="line"> || <a class="code" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5">soap_ssl_crl</a>(soap, <span class="stringliteral">&quot;crl.pem&quot;</span>))            <span class="comment">// specify CRLs</span></div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div><div class="line"><span class="comment">// specify a cipher list</span></div><div class="line">SSL_CTX_set_cipher_list(soap-&gt;<a class="code" href="structsoap.html#a2ba5188ff4e8d734652a55a11842e79c">ctx</a>, <span class="stringliteral">&quot;HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!DH&quot;</span>);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__soap.html#gab18ff4d6039f1387641508ae7be8a145" title="User-definable length of RSA keys used for https connections (the value is 2048 by default) ...">SOAP_SSL_RSA_BITS</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">soap</td><td><code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context </td></tr>
    <tr><td class="paramname">flags</td><td>SSL/TLS context initialization flags </td></tr>
    <tr><td class="paramname">keyfile</td><td>private key file in PEM format or NULL </td></tr>
    <tr><td class="paramname">password</td><td>password to unlock the private key or NULL </td></tr>
    <tr><td class="paramname">cafile</td><td>file with certificates in PEM format or NULL </td></tr>
    <tr><td class="paramname">capath</td><td>directory to certificates </td></tr>
    <tr><td class="paramname">dhfile</td><td>file with DH parameters or numeric string value to generate DH parameters or NULL </td></tr>
    <tr><td class="paramname">randfile</td><td>file to seed the PRNG or NULL </td></tr>
    <tr><td class="paramname">sid</td><td>a unique server id for session caching or NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<hr class="footer">
<address class="footer">
Copyright (C) 2021, Robert van Engelen, Genivia Inc., All Rights Reserved.
</address>
<address class="footer"><small>
Converted on Thu Dec 23 2021 13:46:46 by <a target="_blank" href="http://www.doxygen.org/index.html">Doxygen</a> 1.8.11</small></address>
<br>
<div style="height: 246px; background: #DBDBDB;">
</body>
</html>
